﻿using System;
using System.Threading;

namespace $RootNamespace$
{

    public sealed class $MultiThreadedSingleton$
    {


        private static readonly Lazy<$MultiThreadedSingleton$> _instance
              = new Lazy<$MultiThreadedSingleton$>(() => new $MultiThreadedSingleton$(),LazyThreadSafetyMode.PublicationOnly);


        private $MultiThreadedSingleton$() { }
	public void Operation() { Console.WriteLine("Operation of $MultiThreadedSingleton$"); }
        public static $MultiThreadedSingleton$ Instance
        {
            get
            {

                return _instance.Value;
            }
        }

        public static void Test()
        {
            $MultiThreadedSingleton$ singleton = $MultiThreadedSingleton$.Instance;
            singleton.Operation();

        }

    }

}
